package cn.b.sky.admin.service;

import cn.b.sky.admin.model.*;
import cn.b.sky.admin.model.condition.ECodeTypeCondition;

import java.util.List;
import java.util.Map;


/**
 * 
 * @ClassName: ECodeService 
 * @Description:枚举码操作接口 
 * @author: ZhaoXin
 * @date: 2015-7-27 上午10:31:42
 * @version: V1.0  
 *
 */
public interface AdminECodeService {

  /**
   * 
  * @Title:selectECodeList 
  * @Description:查询枚举码列表
  * @param eCodeType 枚举码类型
  * @return List<ECode>
  * @author: ZhaoXin
  * @date: 2015-7-27 上午10:33:51
  * @version: V1.0
   */
  List<ECode> selectECodeList(String eCodeType, String languageCode);
  
  /**
   * 
   * <strong>Title : selectECodeMap<br></strong>
   * <strong>Description : </strong>查询枚举码列表，并处理成Map形式，其中Key为eCode，Value为枚举码对象<br> 
   * <strong>Create on : 2016-5-24 下午3:25:21<br></strong>
   * <p>
   * @param eCodeType 枚举码类型
   * @param languageCode 语言编码
   * @return 枚举码列表Map，其中Key为eCode，Value为枚举码对象
   * Map<String,ECode>
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public Map<String,ECode> selectECodeMap(String eCodeType, String languageCode);

  /**
   * 
   * <strong>Title : selectEcodeByECodeTypeAndLanguageCodeAndECode<br></strong>
   * <strong>Description : </strong>通过代码查询ecode的text<br> 
   * <strong>Create on : 2015-8-1 下午3:42:31<br></strong>
   * <p>
   * @param ecode
   * @param eCodeType
   * @param languageCode
   * @return
   * ECode
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  ECode selectEcodeByECodeTypeAndLanguageCodeAndECode(String ecode, String eCodeType, String languageCode);
  
  /**
   * 
   * <strong>Title : insertOrUpdateECodeTypeAndECode<br></strong>
   * <strong>Description : </strong>新增或修改枚举码类型及相关枚举码信息<br> 
   * <strong>Create on : 2016-6-8 上午10:34:57<br></strong>
   * <p>
   * @param eCodeType 枚举码类型信息(包含枚举信息)
   * @return
   * String 操作结果信息
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public String insertOrUpdateECodeTypeAndECode(ECodeType eCodeType);
  
  /**
   * 
   * <strong>Title : deleteECodeTypeAndAssociatedDataByECodeType<br></strong>
   * <strong>Description : </strong>根据枚举类型编码删除其信息及相关联的数据信息<br> 
   * <strong>Create on : 2016-6-8 上午11:14:57<br></strong>
   * <p>
   * @param eCodeType 枚举码类型编码
   * @return
   * BatchJobReport 操作结果
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public BatchJobReport deleteECodeTypeAndAssociatedDataByECodeType(String eCodeType);
  

	/**
	 * 
	 * <strong>Title : selectECodeTypesPageByCondition<br></strong>
	 * <strong>Description : </strong>根据查询条件查询枚举码类型分页信息<br> 
	 * <strong>Create on : 2016-6-7 上午10:24:07<br></strong>
	 * <p>
	 * @param condition 枚举码类型查询条件
	 * @return
	 * Page 分页信息
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public Page selectECodeTypesPageByCondition(ECodeTypeCondition condition);
	
	/**
	 * 
	 * <strong>Title : getECodeTypeAndAssociatedDataByECodeType<br></strong>
	 * <strong>Description : </strong>根据枚举码类型查询枚举码类型对象及其关联信息<br> 
	 * <strong>Create on : 2016-6-8 上午09:54:05<br></strong>
	 * <p>
	 * @param ecodeType 枚举码类型
	 * @return
	 * ECodeType 枚举码类型对象
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public ECodeType getECodeTypeAndAssociatedDataByECodeType(String eCodeType);
	
	/**
	 * 
	 * <strong>Title : selectEcodeListForTranslate<br></strong>
	 * <strong>Description : </strong>针对翻译功能查询枚举码信息集合<br> 
	 * <strong>Create on : 2016-6-12 下午1:31:59<br></strong>
	 * <p>
	 * @param eCodeType 枚举码类型编号
	 * @param sourceLanguageCode 源语言编码
	 * @param toLanguageCode 目标语言编码
	 * @return
	 * List<ECode> 枚举码信息集合
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<ECode> selectEcodeListForTranslate(
			String eCodeType, String sourceLanguageCode, String toLanguageCode) ;
  
	/**
	 * 
	 * <strong>Title : insertOrUpdateECodeTlBatch<br></strong>
	 * <strong>Description : </strong>批量插入或更新枚举码翻译信息<br> 
	 * <strong>Create on : 2016-6-12 下午5:32:33<br></strong>
	 * <p>
	 * @param eCodeTlList 枚举码翻译信息集合
	 * void
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void insertOrUpdateECodeTlBatch(List<ECodeTl> eCodeTlList);
	
	/**
	 * 
	 * <strong>Title : getECodeTypeByPK<br></strong>
	 * <strong>Description : </strong>根据枚举类型信息主键查询数据对象<br> 
	 * <strong>Create on : 2016-6-13 上午10:42:01<br></strong>
	 * <p>
	 * @param eCodeType 枚举类型信息
	 * @return
	 * ECodeType 枚举类型信息对象
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public ECodeType getECodeTypeByPK(String eCodeType);
}
